arr=[1,2,3,4]
//forEach
Array.prototype.my_forEach=function(callback){
    for(let i=0;i<this.length;i++){
        callback(this[i],i,this)
    }
}
//map
Array.prototype.my_map=function(callback){
    let arr=[]
    for(let i=0;i<this.length;i++){
        arr.push(callback(this[i],i,this))
    }
    return arr
}
//filter
Array.prototype.my_filter=function(callback){
    let arr=[]
    for(let i=0;i<this.length;i++){
        if(callback(this[i],i,this)){
            arr.push(this[i])
        }
    }
    return arr
}
//every
Array.prototype.my_every=function(callback){
    for(let i=0;i<this.length;i++){
        if(!callback(this[i],i,this)){
            return false
        }
    }
    return true
}
//some
Array.prototype.my_some=function(callback){
    for(let i=0;i<this.length;i++){
        if(callback(this[i],i,this)){
            return true
        }
    }
    return false
}
//reduce
Array.prototype.my_reduce=function(callback,...arg){
    let pre,start=0;//start表示第二个参数的开始位置
    arg.length?pre=arg[0]:(pre=this[0],start=1)
    for(let i=start;i<this.length;i++){
        pre=callback(pre,this[i],i,this)
    }
    return pre
}